﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using HDT.GUI;
using DTO;
using BLL;

namespace HDT
{
    public partial class FrmDSNhanVien : Form
    {
        private NhanVienDTO nhanvien;
        private List<NhanVienDTO> dsNV;
        private List<LoaiNhanVienDTO> dsLoaiNV;

        public FrmDSNhanVien()
        {
            InitializeComponent();
            nhanvien = new NhanVienDTO();
            dsNV = new List<NhanVienDTO>();
            dsLoaiNV = new List<LoaiNhanVienDTO>();
        }

        public FrmDSNhanVien(TKDangNhapDTO taikhoan)
            : this()
        {
            try
            {
                nhanvien = new NhanVienBLL().GetByID(taikhoan.MaNhanVien);
            }
            catch
            { }
        }

        public void LoadLoaiNV()
        {
            cboLoaiNV.Items.Add("Tất cả");
            foreach (LoaiNhanVienDTO loaiNV in dsLoaiNV)
            {
                cboLoaiNV.Items.Add(loaiNV.TenLoaiNV);
            }
        }

        public void LoadDSNhanVien()
        {
            dgvNV.Rows.Clear();
            foreach (NhanVienDTO nhanvien in dsNV)
            {
                DataGridViewRow row = (DataGridViewRow)dgvNV.Rows[0].Clone();
                row.Cells[0].Value = nhanvien.MaNhanVien;
                row.Cells[1].Value = nhanvien.HoTen;
                row.Cells[2].Value = nhanvien.NgaySinh;
                row.Cells[3].Value = nhanvien.DiaChi;
                row.Cells[4].Value = nhanvien.Email;
                row.Cells[5].Value = nhanvien.DienThoai;
                row.Cells[6].Value = nhanvien.CMND;
                try
                {
                    foreach (LoaiNhanVienDTO loaiNV in dsLoaiNV)
                    {
                        if (loaiNV.MaLoaiNhanVien == nhanvien.MaLoaiNhanVien)
                        {
                            row.Cells[7].Value = loaiNV.TenLoaiNV;
                            break;
                        }
                    }
                }
                catch
                { }
                row.Cells[8].Value = ((TrangThaiNV)nhanvien.TrangThai).ToString();
                dgvNV.Rows.Add(row);
            }
        }

        public void SearchNhanVien()
        {
            string condition = "HoTen LIKE '%" + txtTenNV.Text.Trim() + "%'"
                + (cboLoaiNV.SelectedIndex == 0 ? "" : "AND MaLoaiNV='" + dsLoaiNV[cboLoaiNV.SelectedIndex - 1].MaLoaiNhanVien + "'");
            dsNV = new NhanVienBLL().Select(condition);
            LoadDSNhanVien();
        }

        public void LoadInfoNV(NhanVienDTO nhanvien)
        {
            try
            {
                txtMaNV.Text = nhanvien.MaNhanVien;
                txtHoTen.Text = nhanvien.HoTen;
                txtNgaySinh.Text = nhanvien.NgaySinh.ToString();
                txtDiaChi.Text = nhanvien.DiaChi;
                txtEmail.Text = nhanvien.Email;
                txtSDT.Text = nhanvien.DienThoai;
                txtCMND.Text = nhanvien.CMND;
                foreach (LoaiNhanVienDTO loaiNV in dsLoaiNV)
                {
                    if (loaiNV.MaLoaiNhanVien == nhanvien.MaLoaiNhanVien)
                    {
                        txtLoaiNV.Text = loaiNV.TenLoaiNV;
                        break;
                    }
                }
                txtTrangThai.Text = ((TrangThaiNV)nhanvien.TrangThai).ToString();
            }
            catch
            {
            }

        }

        private void dgvNV_SelectionChanged(object sender, EventArgs e)
        {
            if (dgvNV.SelectedRows.Count > 0)
            {
                try
                {
                    string MaNV = dgvNV.SelectedRows[0].Cells[0].Value.ToString();
                    LoadInfoNV(new NhanVienBLL().GetByID(MaNV));
                }
                catch
                {
                    LoadInfoNV(null);
                }

            }
        }

        private void FrmDSNhanVien_Load(object sender, EventArgs e)
        {
            try
            {
                dsLoaiNV = new LoaiNhanVienBLL().Select();
            }
            catch
            { }
            LoadLoaiNV();
            cboLoaiNV.SelectedIndex = 0;
            SearchNhanVien();
            cboLoaiNV.SelectedIndexChanged += txt_TextChanged;
        }

        private void txt_TextChanged(object sender, EventArgs e)
        {
            SearchNhanVien();
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            FrmThemNV frm_ThemNV = new FrmThemNV();
            frm_ThemNV.refreshForm = new FrmThemNV.Mydelegate(SearchNhanVien);
            frm_ThemNV.ShowDialog();
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            FrmSuaNV frm_SuaNV = new FrmSuaNV();
            frm_SuaNV.ShowDialog();
        }
    }
}